Statically-Guided Fork-based Symbolic Execution for Vulnerability Detection
نویسندگان
چکیده
Fork-based symbolic execution would waste large amounts of computing time and resource on invulnerable paths when applied to vulnerability detection. In this paper, we propose a statically-guided fork-based symbolic execution technique for vulnerability detection to mitigate this problem. In static analysis, we collect all valid jumps along vulnerable paths, and define the priority for each program branch based on the ratio of vulnerable paths over total paths in its subsequent program. In fork-based symbolic execution, path exploration can be restricted to vulnerable paths, and code segments with higher proportion of vulnerable paths can be analyzed in advance by utilizing the result of static analysis. We implement a prototype named SAF-SE and evaluate it with ten benchmarks from GNU Coreutils version 6.11. Experimental results show that SAF-SE outperforms KLEE in the efficiency and accuracy of vulnerability detection. Keywords-fork-based symbolic execution; static analysis; vulnerability detection; program analysis
منابع مشابه
A model-guided symbolic execution approach for network protocol implementations and vulnerability detection
Formal techniques have been devoted to analyzing whether network protocol specifications violate security policies; however, these methods cannot detect vulnerabilities in the implementations of the network protocols themselves. Symbolic execution can be used to analyze the paths of the network protocol implementations, but for stateful network protocols, it is difficult to reach the deep state...
متن کاملTesting C Programs for Vulnerability Using Trace-Based Symbolic Execution and Satisfiability Analysis
Security testing has gained significant attention recently due to the huge number of attacks against software systems. This paper presents a novel security testing method using trace-based symbolic execution and satisfiability analysis. It reuses test cases generated from traditional functional testing to produce execution traces. An execution trace is a sequence of program statements exercised...
متن کاملAlgebraic Matching of Vulnerabilities in a Low-Level Code
This paper explores the algebraic matching approach for detection of vulnerabilities in binary codes. The algebraic programming system is used for implementing this method. It is anticipated that models of vulnerabilities and programs to be verified are presented as behavior algebra and action language specifications. The methods of algebraic matching are based on rewriting rules and techniques...
متن کاملStatic Detection of Event-based Races in Android Apps
Event-based races are the predominant source of concurrency errors in Android apps. So far all the approaches for detecting event-based races have been dynamic. Due to their dynamic nature, these approaches suffer from coverage and false negative issues, and despite being dynamic they still have a high rate of false positives. We introduce a static approach and tool, named SIERRA, for detecting...
متن کاملEfficient Symbolic Execution of Value-Based Data Structures for Critical Systems
Symbolic execution (SymExe) shows promise for increasing the automation of verification tasks in certified safety/security-critical embedded systems, where there is a much greater emphasis on statically allocated data structures. In fact Spark/Ada, a subset of Ada designed for verification and used for building critical systems, only permits data structures that are statically allocated. In thi...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2015